package integracion.mdb;

import integracion.converters.ErrorEnXmlException;
import integracion.converters.NuevoProductoXmlConverter;

import javax.ejb.ActivationConfigProperty;
import javax.ejb.EJB;
import javax.ejb.MessageDriven;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;

import org.apache.log4j.Logger;

import portal.facade.PortalComprasFacadeStateless;
import portal.vo.ProductoVO;


@MessageDriven(activationConfig = { @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"), 
		                            @ActivationConfigProperty(propertyName="destination", propertyValue="jms/queue/deposito") })
public class ProcesarNuevoProductoBean implements MessageListener {

	private static Logger logger = Logger.getLogger(ProcesarNuevoProductoBean.class);
	
	@EJB
	PortalComprasFacadeStateless facadeStateless;
	
	public ProcesarNuevoProductoBean() {}

	public void onMessage(Message message) {
			if (message instanceof TextMessage) {
				logger.info("Recibiendo nuevo producto.");
				
				String xml = null;
				try {
					xml = ((TextMessage) message).getText();
					NuevoProductoXmlConverter converter = new NuevoProductoXmlConverter();
					ProductoVO producto = converter.getVO(xml);
					facadeStateless.agregarProducto(producto);
				} catch (JMSException e) {
					logger.error("Error en el procesamiento del mensaje");
					logger.error(e);
				} catch (ErrorEnXmlException e) {
					logger.error("Error en el procesamiento del xml: \n" + xml);
					logger.error(e);					
				}
			}
	}

}
